package cn.edu.neu.lab603.cloudeval.entity.model

import scala.io.Source

/** 基于文件的利用率更新模型。
  * 文件的每一行代表该模型的当前值。
  *
  * Created by yfwz100 on 2016/11/18.
  */
class FileBasedResModel(val fileName: String, maxVal: Int) extends ResModel {

  private val u = Source.fromFile(fileName).getLines().map(_.toInt).toArray
  private var idx = 0

  /** 根据时钟周期更新当前利用率模型。
    *
    * @param clock 时钟
    */
  override def update(clock: Int): Unit = idx += 1

  /** 规格大小。 */
  override def getMax: Int = maxVal

  /** 当前利用率的值。 */
  override def getValue: Int = u(idx)

  /** 下一帧请求值。 */
  override def getNext: Int = u(idx + 1)
}

object FileBasedResModel {
  def apply(fileName: String, maxVal: Int) = new FileBasedResModel(fileName, maxVal)
}